package Controller;

import java.util.ArrayList;
import java.util.List;

import Beans.OrdenCompraBean;
import Beans.SucursalBean;
import DAO.HibernateOrdenCompraDAO;
import DAO.HibernateSucursalDAO;
import DTO.OrdenCompraDTO;
import Model.OrdenCompra;
import Model.Sucursal;

public class AdministradorOrdenCompra {
private static AdministradorOrdenCompra instancia;
	
	private AdministradorOrdenCompra(){
		
	}
	
	public static AdministradorOrdenCompra getInstancia(){
		if(instancia==null){
			instancia=new AdministradorOrdenCompra();
		}
		return instancia;
	}

	public List<OrdenCompraBean> fromModelToBean(List<OrdenCompra> ordenCompras) {
		List<OrdenCompraBean> ordenComprasBean=new ArrayList<OrdenCompraBean>();
		for (OrdenCompra ordenCompra : ordenCompras) {
			ordenComprasBean.add(fromModelTOBean(ordenCompra));
		}
		return ordenComprasBean;
	}

	public OrdenCompraBean fromModelTOBean(OrdenCompra ordenCompra) {
		OrdenCompraBean ordenCompraBean=null;
		if(ordenCompra!=null){
		ordenCompraBean=new OrdenCompraBean();
		ordenCompraBean.setId(ordenCompra.getId());
		ordenCompraBean.setCalidad(ordenCompra.getCalidad());
		ordenCompraBean.setFecha(ordenCompra.getFecha());
		ordenCompraBean.setItems(AdministradorItemOC.getInstancia().fromModelTOBean(ordenCompra.getItems()));
		ordenCompraBean.setMinDiasVencimiento(ordenCompra.getMinDiasVencimiento());
		ordenCompraBean.setProovedor(AdministradorProovedor.getInstancia().fromModelTOBean(ordenCompra.getProovedor()));
		ordenCompraBean.setUsuarioAlta(ordenCompra.getUsuarioAlta());
		}
		return ordenCompraBean;
	}

	public List<OrdenCompra> fromDTOTOModel(List<OrdenCompraDTO> ordenComprasDTO) {
		List<OrdenCompra> ordenCompras=new ArrayList<OrdenCompra>();
		for (OrdenCompraDTO ordenCompraDTO : ordenComprasDTO) {
			ordenCompras.add(fromDTOTOModel(ordenCompraDTO));
		}
		return ordenCompras;
	}
	public OrdenCompra fromDTOTOModel(OrdenCompraDTO ordenCompraDTO) {
		OrdenCompra ordenCompra=null;
		if(ordenCompraDTO!=null){
		ordenCompra=new OrdenCompra();
		ordenCompra.setId(ordenCompraDTO.getId());
		ordenCompra.setCalidad(ordenCompraDTO.getCalidad());
		ordenCompra.setFecha(ordenCompraDTO.getFecha());
		ordenCompra.setItems(AdministradorItemOC.getInstancia().fromDTOTOModel(ordenCompraDTO.getItems()));
		ordenCompra.setMinDiasVencimiento(ordenCompraDTO.getMinDiasVencimiento());
		ordenCompra.setProovedor(AdministradorProovedor.getInstancia().fromDTOTOModel(ordenCompraDTO.getProovedor()));
		ordenCompra.setUsuarioAlta(ordenCompraDTO.getUsuarioAlta());
		}
		return ordenCompra;
	}
	
	public List<OrdenCompraDTO> fromModelTODTO(List<OrdenCompra> ordenCompras) {
		List<OrdenCompraDTO> ordenComprasDTO=new ArrayList<OrdenCompraDTO>();
		for (OrdenCompra ordenCompra : ordenCompras) {
			ordenComprasDTO.add(fromModelTODTO(ordenCompra));
		}
		return ordenComprasDTO;
	}
	public OrdenCompraDTO fromModelTODTO(OrdenCompra ordenCompra) {
		OrdenCompraDTO ordenCompraDTO=null;
		if(ordenCompra!=null){
			ordenCompraDTO=new OrdenCompraDTO();
			ordenCompraDTO.setId(ordenCompra.getId());
			ordenCompraDTO.setCalidad(ordenCompra.getCalidad());
			ordenCompraDTO.setFecha(ordenCompra.getFecha());
			ordenCompraDTO.setItems(AdministradorItemOC.getInstancia().fromModelTODTO(ordenCompra.getItems()));
			ordenCompraDTO.setMinDiasVencimiento(ordenCompra.getMinDiasVencimiento());
			ordenCompraDTO.setProovedor(AdministradorProovedor.getInstancia().fromModelTODTO(ordenCompra.getProovedor()));
			ordenCompraDTO.setUsuarioAlta(ordenCompra.getUsuarioAlta());
		}
		return ordenCompraDTO;
	}

	public List<OrdenCompra> fromBeanTOModel(List<OrdenCompraBean> ordenComprasBean) {
		List<OrdenCompra> ordenCompras=new ArrayList<OrdenCompra>();
		for (OrdenCompraBean ordenCompraBean : ordenComprasBean) {
			ordenCompras.add(fromBeanTOModel(ordenCompraBean));
		}
		return ordenCompras;
	}

	public OrdenCompra fromBeanTOModel(OrdenCompraBean ordenCompraBean) {
		OrdenCompra ordenCompra=null;
		if(ordenCompraBean!=null){
			ordenCompra=new OrdenCompra();
			ordenCompra.setId(ordenCompraBean.getId());
			ordenCompra.setCalidad(ordenCompraBean.getCalidad());
			ordenCompra.setFecha(ordenCompraBean.getFecha());
			ordenCompra.setItems(AdministradorItemOC.getInstancia().fromBeanTOModel(ordenCompraBean.getItems()));
			ordenCompra.setMinDiasVencimiento(ordenCompraBean.getMinDiasVencimiento());
			ordenCompra.setProovedor(AdministradorProovedor.getInstancia().fromBeanTOModel(ordenCompraBean.getProovedor()));
			ordenCompra.setUsuarioAlta(ordenCompraBean.getUsuarioAlta());
		}
		return ordenCompra;
	}

	public void grabarOrdenCompra(OrdenCompra ordenCompra) {
		OrdenCompraBean fb=fromModelTOBean(ordenCompra);
		HibernateOrdenCompraDAO.getInstancia().grabarOrdenCompra(fb);
		
	}
	
	public OrdenCompra buscarOrdenCompra(OrdenCompra f){
		OrdenCompraBean fb=fromModelTOBean(f);
		fb=HibernateOrdenCompraDAO.getInstancia().buscarOrdenCompra(fb);
		return fromBeanTOModel(fb);
	}

	public List<OrdenCompraBean> fromModelTOBean(List<OrdenCompra> ordenes) {
		List<OrdenCompraBean> ordenesb=new ArrayList<OrdenCompraBean>();
		for (OrdenCompra ordenCompra : ordenes) {
			OrdenCompraBean ordenb=fromModelTOBean(ordenCompra);
			ordenesb.add(ordenb);
		}
		return ordenesb;
	}
	
	public List<OrdenCompra> listOrdenesDeCompra() {
		List<OrdenCompraBean> ocBeans= HibernateOrdenCompraDAO.getInstancia().list();
		return fromBeanTOModel(ocBeans);
	}
}
